############################################################## 
## MOD Title: 		Warnings Mod
## MOD Author:	 	Xpert < xpert@phpbbguru.net > http://www.phpbbguru.net 
## MOD Adapted      PheRum  ICQ 580403056
## MOD Description: 	Warnings system for TorrentPier II
## MOD Version: 	1.0.7   TorrentPier II
## 
## Installation Level: 	Easy 
## Installation Time: 	10 Minutes 
############################################################## 

#
#-----[ SQL ]------------------------------------------
#

ALTER TABLE `bb_users` ADD `user_warnings` TINYINT( 1 ) DEFAULT '0' NOT NULL, ADD `user_banned` TINYINT( 1 ) DEFAULT '0' NOT NULL;

INSERT INTO `bb_config` VALUES ('warnings_time', '0');
INSERT INTO `bb_config` VALUES ('warnings_per_ban', '3');

CREATE TABLE `bb_warnings` (
  `warning_id` mediumint(8) unsigned NOT NULL auto_increment,
  `warning_type` tinyint(1) unsigned NOT NULL default '0',
  `warning_post_id` mediumint(8) unsigned NOT NULL default '0',
  `warning_user_id` mediumint(8) unsigned NOT NULL default '0',
  `warning_poster_id` mediumint(8) unsigned NOT NULL default '0',
  `warning_posted` int(11) NOT NULL default '0',
  `warning_expires` int(11) NOT NULL default '0',
  `warning_proceed` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`warning_id`)
) TYPE=MyISAM;

CREATE TABLE `bb_warnings_text` (
  `warning_id` mediumint(8) unsigned NOT NULL default '0',
  `bbcode_uid` varchar(10) NOT NULL default '',
  `warning_text` text,
  PRIMARY KEY  (`warning_id`)
) TYPE=MyISAM;

#
#-----[ OPEN ]------------------------------------------
#
includes/init_bb.php

#
#-----[ FIND ]------------------------------------------
#

define('BB_WORDS',                'bb_words');

#
#-----[ AFTER, ADD ]------------------------------------------
#

define('BB_WARNINGS', 			 'bb_warnings');
define('BB_WARNINGS_TEXT', 		 'bb_warnings_text');


#
#-----[ FIND ]------------------------------------------
#

define('TOPIC_DL_TYPE_DL',     1);

#
#-----[ AFTER, ADD ]------------------------------------------
#

define('POST_WARNING_URL',   'w');
define('WARNING_TYPE_WARNING', 1);
define('WARNING_TYPE_BAN',     2);
define('WARNING_INFINITY',    -1);


#
#-----[ OPEN ]------------------------------------------
#

index.php

#
#-----[ FIND ]------------------------------------------
#

require(BB_ROOT ."common.php");

#
#-----[ AFTER, ADD ]------------------------------------------
#

include(BB_ROOT . 'warnings_common.php');


#
#-----[ OPEN ]------------------------------------------
#
includes/sessions.php

#
#-----[ FIND ]------------------------------------------
#
	function session_create ($userdata, $auto_created = false)
	{
		global $bb_cfg


#
#-----[ AFTER, ADD ]------------------------------------------
#

, $lang

#
#-----[ FIND ]------------------------------------------
#

		// Initial ban check against user_id or IP address
		if ($is_user)
		{
			preg_match('#(..)(..)(..)(..)#', USER_IP, $ip);

			$where_sql  = "ban_ip IN('". USER_IP ."', '$ip[1]$ip[2]$ip[3]ff', '$ip[1]$ip[2]ffff', '$ip[1]ffffff')";
			$where_sql .= ($login) ? " OR ban_userid = $user_id" : '';

			$sql = "SELECT ban_id FROM ". BB_BANLIST ." WHERE $where_sql LIMIT 1";

			if ($db->fetch_row($sql))
			{
				bb_exit('`');
			}
		}


#-----[ AFTER, ADD ]------------------------------------------
#
		// [begin] Warnings Mod 1.0.7
		$sql = "SELECT c.config_value FROM " . BB_CONFIG . " AS c WHERE c.config_name = 'warnings_per_ban'";
		if ( !($result = DB()->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, "    warnings_per_ban", '', __LINE__, __FILE__, $sql);
		}
		$row = DB()->sql_fetchrow($result);
		$warnings_per_ban = $row['config_value'];		
		
	if ( ( $userdata['user_warnings'] >= $warnings_per_ban ) || $userdata['user_banned'] )
	{
		if ( $userdata['user_banned'] )
		{
			$warning_type = WARNING_TYPE_BAN;
			$warning_lang = 'YOU_BEEN_BANNED_BAN';
		}
		else
		{
			$warning_type = WARNING_TYPE_WARNING;
			$warning_lang = 'YOU_BEEN_BANNED_WARNINGS';
		}

		$sql = "SELECT * FROM " . BB_WARNINGS . " WHERE warning_user_id = " . $userdata['user_id'] . " AND warning_proceed = 0 AND warning_expires != " . WARNING_INFINITY . " AND warning_type = '$warning_type' ORDER BY warning_expires ASC LIMIT 1";
		$result = DB()->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not get warning information', '', __LINE__, __FILE__, $sql);

		if ( DB()->num_rows($result) )
		{
			$row = DB()->sql_fetchrow($result);
			$unban_time = date("m-d-Y H:i", $row['warning_expires']);
			bb_exit( sprintf($lang[$warning_lang], $unban_time) );			
		}
		else
		{
			bb_exit($lang['YOU_BEEN_BANNED']);
		}
	}
	// [end] Warnings Mod 1.0.7

#
#-----[ OPEN ]------------------------------------------
#

viewtopic.php

#
#-----[ FIND ]------------------------------------------
#

// Go ahead and pull all data for this topic
//

#
#-----[ FIND ]------------------------------------------
#

u.username, u.user_id

#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, u.user_level, u.user_warnings, u.user_banned

#
#-----[ FIND ]------------------------------------------
#
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
//

#
#-----[ BEFORE, ADD ]------------------------------------------
#
// [begin] Warnings Mod 1.0.7
$min_post_id = $postrow[0]['post_id'];
$max_post_id = $postrow[count($postrow) - 1]['post_id'];

$sql = "SELECT w.*, wt.*, u.username FROM " . BB_WARNINGS . " w, " . BB_WARNINGS_TEXT . " wt, " . BB_USERS . " u, " . BB_POSTS . " p WHERE p.topic_id = $topic_id AND p.post_id >= $min_post_id AND p.post_id <= $max_post_id AND w.warning_post_id = p.post_id AND w.warning_id = wt.warning_id AND w.warning_proceed = 0 AND u.user_id = w.warning_poster_id";
$result = DB()->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not insert warning information', '', __LINE__, __FILE__, $sql);

$warnings_row = array();
while ( $row = DB()->sql_fetchrow($result) )
{
	$warnings_row[$row['warning_post_id']][] = $row;
}

DB()->sql_freeresult($result);
// [end] Warnings Mod 1.0.7

#
#-----[ FIND ]------------------------------------------
#
	//
	// Handle anon users posting with usernames
	
#
#-----[ BEFORE, ADD ]------------------------------------------
#
	// [begin] Warnings Mod 1.0.7
	elseif ( $postrow[$i]['user_warnings'] || $postrow[$i]['user_banned'] )
	{
		if ( ( $postrow[$i]['user_warnings'] >= $board_config['warnings_per_ban'] ) || $postrow[$i]['user_banned'] )
		{
			$poster_rank = $lang['BANNED_RANK'];
			$rank_image =  '<img src="' . $images['user_banned_rank'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" />';
		}
		elseif ( $postrow[$i]['user_warnings'] )
		{
			$poster_rank = sprintf($lang['WARNED_RANK'], $postrow[$i]['user_warnings']);
			$rank_image =  '<img src="' . $images['user_warned_rank'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" />&nbsp;';
			$rank_image = str_repeat($rank_image, $postrow[$i]['user_warnings']);
		}
		$rank_image .= '<br />';
	}
	// [end] Warnings Mod 1.0.7

#
#-----[ FIND ]------------------------------------------
#
	$ip_btn = ($is_auth['auth_mod'] || IS_MOD);

#
#-----[ AFTER, ADD ]------------------------------------------
#
		// [begin] Warnings Mod 1.0.7
		if ( !in_array($postrow[$i]['user_level'], array(ADMIN,MOD)) && ($poster_id != ANONYMOUS) )
		{
			$temp_url = "warnings.php?" . POST_POST_URL . "=" . $postrow[$i]['post_id'] . "&amp;mode=add_warning&amp;sid=" . $userdata['session_id'];
			$warning_img = '<a href="' . $temp_url . '"><img src="' . $images['user_warn'] . '" alt="' . $lang['WARN_USER'] . '" title="' . $lang['WARN_USER'] . '" border="0" /></a>';
			$warning = '<a href="' . $temp_url . '">' . $lang['WARN_USER'] . '</a>';
		}
		else
		{
			$temp_url = '';
			$warning_img = '';
			$warning = '';
		}
		// [end] Warnings Mod 1.0.7

#
#-----[ FIND ]------------------------------------------
#
		$l_edited_by = '';
	}
	
#
#-----[ AFTER, ADD ]------------------------------------------
#
	// [begin] Warnings Mod 1.0.7
	if ( isset($warnings_row[$postrow[$i]['post_id']]) )
	{
		$warnings = array();

		foreach ($warnings_row[$postrow[$i]['post_id']] as $warning_row)
		{
			$warning_icon = ( $warning_row['warning_type'] == WARNING_TYPE_WARNING ) ? $images['user_warned_rank'] : $images['user_banned_rank'];
			$warning_icon = '<img src="' . $warning_icon . '" border="0" alt="">';
			$warning_text = htmlspecialchars($warning_row['warning_text']);
			$warning_poster = '<a class="gensmall" href="' . append_sid('profile.php?mode=viewprofile&amp;' . POST_USERS_URL . '=' . $warning_row['warning_poster_id']) . '">' . $warning_row['username'] . '</a>';

			$warnings[] = sprintf($lang['WARNINGS_VIEWTOPIC'], $warning_icon, $warning_text, $warning_poster);
		}

		$warnings_info = '<br /><br />' . implode('<br />', $warnings);
	}
	else
	{
		$warnings_info = '';
	}
	// [end] Warnings Mod 1.0.7

#
#-----[ FIND ]------------------------------------------
#
		'DELETE'  => $delpost_btn,
		'IP'      => $ip_btn,

#
#-----[ AFTER, ADD ]------------------------------------------
#
		// [begin] Warnings Mod 1.0.7
		'WARNING_IMG'   => $warning_img,
		'WARNING'       => $warning,
		'WARNINGS_INFO' => $warnings_info,
		// [end] Warnings Mod 1.0.7

#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_viewprofile.php

#
#-----[ FIND ]------------------------------------------
#
if ($user_rank = $profiledata['user_rank'] AND isset($ranks[$user_rank]))
	
#
#-----[ BEFORE, ADD ]------------------------------------------
#

// [begin] Warnings Mod 1.0.7
if ( $profiledata['user_warnings'] || $profiledata['user_banned'] )
{
	if ( ( $profiledata['user_warnings'] >= $bb_cfg['warnings_per_ban'] ) || $profiledata['user_banned'] )
	{
		$poster_rank = $lang['BANNED_RANK'];
		$rank_image =  '<img src="' . $images['user_banned_rank'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" />';

	}
	elseif ( $profiledata['user_warnings'] )
	{
		$poster_rank = sprintf($lang['WARNED_RANK'], $profiledata['user_warnings']);
		$rank_image =  '<img src="' . $images['user_warned_rank'] . '" alt="' . $poster_rank . '" title="' . $poster_rank . '" border="0" />&nbsp;';
		$rank_image = str_repeat($rank_image, $profiledata['user_warnings']);
	}
	$rank_image .= '<br />'; 

}
else
// [end] Warnings Mod 1.0.7

#
#-----[ FIND ]------------------------------------------
#

define('IN_VIEWPROFILE', TRUE);

#
#-----[ BEFORE, ADD ]------------------------------------------
#

// [begin] Warnings Mod 1.0.7
$sql = "SELECT w.*, wt.*, u.username FROM " . BB_WARNINGS . " w, " . BB_WARNINGS_TEXT . " wt, " . BB_USERS . " u WHERE w.warning_user_id = '" . $profiledata['user_id'] . "' AND wt.warning_id = w.warning_id AND u.user_id = w.warning_poster_id";
if ( !in_array($userdata['user_level'], array(ADMIN,MOD)) )
{
	$sql .= " AND (w.warning_expires > " . time() . " OR w.warning_expires = " . WARNING_INFINITY . ')';
}
$sql .= " ORDER BY w.warning_proceed ASC, w.warning_posted DESC";
$result = DB()->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not insert warning information', '', __LINE__, __FILE__, $sql);

if ( DB()->num_rows($result) )
{
	$template->set_filenames(array(
		'warnings_profile_view_body' => 'warnings_profile_view_body.tpl')
	);

	$template->assign_block_vars('switch_warnings', array());
	$i = 1;
	$previous_warning_proceed = 0;
	$warning_actions_flag = FALSE;

	while ( $row = DB()->sql_fetchrow($result) )
	{
		switch ( $row['warning_type'] )
		{
			case WARNING_TYPE_WARNING:
				$warning_icon = $images['user_warned_rank'];
			break;
					
			case WARNING_TYPE_BAN:
				$warning_icon = $images['user_banned_rank'];
			break;
		}
			
		$warning_icon = '<img src="' . $warning_icon . '" border="0" alt="">';
		$warning_text = htmlspecialchars($row['warning_text']);
		$warning_post = '<a class="gensmall" href="' . append_sid('viewtopic.php?' . POST_POST_URL . '=' . $row['warning_post_id']) . '#' . $row['warning_post_id'] . '">' . $lang['WARNED_POST_LINK'] . '</a>';
		$warning_poster = '<a class="gensmall" href="' . append_sid('profile.php?mode=viewprofile&amp;' . POST_USERS_URL . '=' . $row['warning_poster_id']) . '">' . $row['username'] . '</a>';
		$warning_posted = bb_date($row['warning_posted']);
		$warning_expires = ( $row['warning_expires'] != WARNING_INFINITY ) ? bb_date($row['warning_expires']) : $lang['WT_INFINITY'];

		if ( $row['warning_proceed'] && !$previous_warning_proceed )
		{
			$i = 1;
		}

		$template->assign_block_vars('warning_row', array(
			'WARNING_NUMBER' => $i,
			'WARNING_ICON' => $warning_icon,
			'WARNING_TEXT' => $warning_text,
			'WARNING_POST' => $warning_post,
			'WARNING_POSTER' => $warning_poster,
			'WARNING_POSTED' => $warning_posted,
			'WARNING_EXPIRES' => $warning_expires
			)
		);

		if ( $row['warning_proceed'] && !$previous_warning_proceed )
		{
			$template->assign_block_vars('warning_row.proceed_separator', array());
		}

		if ( ( $row['warning_poster_id'] == $userdata['user_id'] ) || ( $userdata['user_level'] == ADMIN ) )
		{
			$warning_actions_flag = TRUE;

			$warning_actions = array();
			$warning_actions[] = '<a class="gensmall" href="warnings.php?mode=edit_warning&amp;' . POST_WARNING_URL . '=' . $row['warning_id'] . '&amp;sid=' . $userdata['session_id'] . '">' . $lang['EDIT_WARNING'] . '</a>';
			if ( !$row['warning_proceed'] )
			{
				$warning_actions[] = '<a class="gensmall" href="warnings.php?mode=remove_warning&amp;' . POST_WARNING_URL . '=' . $row['warning_id'] . '&amp;sid=' . $userdata['session_id'] . '">' . $lang['REMOVE_WARNING'] . '</a>';
			}
			$warning_actions[] = '<a class="gensmall" href="warnings.php?mode=delete_warning&amp;' . POST_WARNING_URL . '=' . $row['warning_id'] . '&amp;sid=' . $userdata['session_id'] . '">' . $lang['DELETE_WARNING'] . '</a>';

			$template->assign_block_vars('warning_row.actions', array(
				'WARNING_ACTIONS' => implode($warning_actions, '<br />')
				)
			);
		}

		$i++;
		$previous_warning_proceed = $row['warning_proceed'];
	}

	if ( $warning_actions_flag )
	{
		$template->assign_block_vars('warning_actions_header', array());
	}

	if ( ( $profiledata['user_warnings'] >= $bb_cfg['warnings_per_ban'] ) || 	$profiledata['user_banned'] )
	{
		if ( $profiledata['user_banned'] )
		{
			$warning_type = WARNING_TYPE_BAN;
			$warning_lang = 'USER_BANNED_BAN';
		}
		else
		{
			$warning_type = WARNING_TYPE_WARNING;
			$warning_lang = 'USER_BANNED_WARNINGS';
		}

		$sql = "SELECT * FROM " . BB_WARNINGS . " WHERE warning_user_id = " . $profiledata['user_id'] . " AND warning_proceed = 0 AND warning_expires != " . WARNING_INFINITY . " AND warning_type = '$warning_type' ORDER BY warning_expires ASC LIMIT 1";
		$result = DB()->sql_query($sql) or message_die(GENERAL_ERROR, 'Could not get warning information', '', __LINE__, __FILE__, $sql);

		if ( DB()->num_rows($result) )
		{
			$row = DB()->sql_fetchrow($result);
			$unban_time = bb_date($row['warning_expires']);
			$warning_lang = sprintf($lang[$warning_lang], $unban_time);
		}
		else
		{
			$warning_lang = $lang['USER_BANNED'];
		}

		$template->assign_block_vars('switch_banned', array());

		$template->assign_vars(array(
			'BANNED' => $warning_lang,	
		));
	}

	$template->assign_var_from_handle('WARNINGS', 'warnings_profile_view_body');
}
// [end] Warnings Mod 1.0.7

#
#-----[ OPEN ]------------------------------------------
#

templates/default/viewtopic.tpl

#
#-----[ FIND ]------------------------------------------
#

<!-- IF not IN_MODERATION --><a class="txtb" href="{PAGE_URL}&amp;mod=1&amp;start={PAGE_START}#{postrow.POST_ID}">{MOD_POST_IMG}</a>{POST_BTN_SPACER}


#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
 {postrow.WARNING_IMG}
 
#
#-----[ FIND ]------------------------------------------
#
<!-- IF postrow.EDITED_MESSAGE --><div class="last_edited">{postrow.EDITED_MESSAGE}</div><!-- ENDIF -->

#
#-----[ AFTER, ADD ]------------------------------------------
#
<!-- IF postrow.WARNINGS_INFO --><div class="warn_edited">{postrow.WARNINGS_INFO}</div><!-- ENDIF -->
 
#
#-----[ OPEN ]------------------------------------------
#
templates/default/usercp_viewprofile.tpl

#
#-----[ FIND ]------------------------------------------
#
		<td class="row1" valign="top" width="70%">
#
#-----[ ADD ]------------------------------------------
#
	<!-- BEGIN switch_warnings -->		
    <table class="bordered w100"> 
    <tr><th colspan="4" class="thHead"></th></tr> 
    <tr><td><b><span class="gen">{WARNINGS}</span></b></td></tr></table>
    <!-- END switch_warnings -->

	

#
#-----[ OPEN ]------------------------------------------
#
templates/default/tpl_config.php

#
#-----[ FIND ]------------------------------------------
#
$images['icon_icq']            = $_lang .'icon_icq_add.gif';

#
#-----[ AFTER, ADD ]------------------------------------------
#
// [begin] Warnings Mod 1.0.7
$images['user_warn']           = $_lang .'user_warn.gif';
$images['user_warned_rank']    = $_lang .'user_warned_rank.gif';
$images['user_banned_rank']    = $_lang .'user_banned_rank.gif';
// [end] Warnings Mod 1.0.7

#
#-----[ OPEN ]------------------------------------------
#

language/lang_russian/lang_main.php

#
#-----[ FIND ]------------------------------------------
#
?>

#
#-----[ BEFORE, ADD ]------------------------------------------
#

// [begin] Warnings Mod 1.0.7
$lang['WARNED_RANK'] = ': %s';
$lang['BANNED_RANK'] = '';
$lang['WARN_USER'] = '  ';
$lang['WARNING_TYPE'] = '';
$lang['WARNING_TYPE_WARNING'] = '';
$lang['WARNING_TYPE_BAN'] = '';
$lang['WARNING_TIME'] = '';
$lang['WARNING_TEXT'] = '';
$lang['NO_WARNING_FOR_USER'] = '      ';
$lang['WARNING_RECEIVED_FOR_THIS_POST'] = '      ';
$lang['BAN_RECEIVED_FOR_THIS_POST'] = '      ';
$lang['WARNING_CANNOT_PROCESS_NOT_YOURS'] = '       ';
$lang['WARNING_CANNOT_REMOVE_EXPIRED'] = '     ';
$lang['USER_NOT_EXIST'] = '  ';
$lang['WARNINGS_NOT_ENOUGH_PARAMS'] = ' ';
$lang['WARNINGS_WRONG_PARAMS'] = ' ';
$lang['WT_INFINITY'] = '';
$lang['WT_1'] = '1 ';
$lang['WT_3'] = '3 ';
$lang['WT_5'] = '5 ';
$lang['WT_7'] = '7 ';
$lang['WT_14'] = '2 ';
$lang['WT_30'] = '1 ';
$lang['EXPIRED_WARNINGS'] = '';
$lang['WARNING_SUCCESSFULLY_ADDED'] = '   ';
$lang['WARNING_SUCCESSFULLY_EDITED'] = '   ';
$lang['WARNING_ACTIONS'] = '';
$lang['EDIT_WARNING'] = '';
$lang['REMOVE_WARNING'] = '';
$lang['DELETE_WARNING'] = '';
$lang['CONFIRM_REMOVE_WARNING'] = '     ?';
$lang['CONFIRM_DELETE_WARNING'] = '     ?';
$lang['WARNING_REMOVED'] = '   ';
$lang['WARNING_DELETED'] = '   ';
$lang['CLICK_RETURN_PROFILE'] = '%s   %s';
$lang['WARNED_POST_LINK'] = '  ';
$lang['WARNINGS'] = '';
$lang['WARNING_TEXT_CAPTION'] = '';
$lang['WARNING_POSTER'] = '';
$lang['WARNING_EXPIRES'] = ' ';
$lang['USER_BANNED'] = ' ';
$lang['YOU_BEEN_BANNED_WARNINGS'] = '     .       %s';
$lang['YOU_BEEN_BANNED_BAN'] = '  .       %s';
$lang['USER_BANNED_WARNINGS'] = '    .    %s';
$lang['USER_BANNED_BAN'] = ' .    %s';
$lang['WARNINGS_LIMIT_REACHED'] = '    ';
$lang['YOU_RECEIVED_WARNING'] = '    %s';
$lang['YOU_RECEIVED_BAN'] = '    %s';
$lang['WARNINGS_PER_BAN'] = '  ';
$lang['WARNINGS_PER_BAN_EXPLAIN'] = '    ';
$lang['WARNINGS_VIEWTOPIC'] = '%s %s,  %s';
$lang['WARNING_TYPE_CHANGED_12'] = '    ';
$lang['WARNING_TYPE_CHANGED_21'] = '    ';
$lang['TOTAL_WARN'] = '   %s ,    %s     . ';
$lang['WARNING_WITH_THIS_DATA_ALREADY_GIVEN'] = '      ';
$lang['BAN_CHANGED_TO_WARNING'] = '   !';
$lang['WARNING_CHANGED_TO_BAN'] = '   !';
$lang['WARNINGS_CP'] = ' ';
$lang['WARNINGS'] = '';
$lang['TOTAL_WARNS'] = ' ';
// [end] Warnings Mod 1.0.7

# 
#-----[ OPEN ]------------------------------------------ 
# 
templates/admin/admin_board.tpl

# 
#-----[ FIND ]------------------------------------------ 
# 
	<tr>
	<td><h4>{L_ENABLE_PRUNE}</h4></td>
	<td><input type="radio" name="prune_enable" value="1" {PRUNE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="prune_enable" value="0" {PRUNE_NO} /> {L_NO}</td>
	</tr>


# 
#-----[ AFTER, ADD ]------------------------------------------ 
#
<!-- [begin] Warnings Mod 1.0.7 -->
	<tr>
		<td class="row1">{L_WARNINGS_PER_BAN}<br /><span class="gensmall">{L_WARNINGS_PER_BAN_EXPLAIN}</span></td>
		<td class="row2"><input class="post" type="text" name="warnings_per_ban" size="3" maxlength="4" value="{WARNINGS_PER_BAN}" /></td>
	</tr>
<!-- [end] Warnings Mod 1.0.7 -->
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_board.php

# 
#-----[ FIND ]------------------------------------------ 
# 
	if( isset($_POST['submit']) )
	{
		$message = $lang['CONFIG_UPDATED'] . "<br /><br />" . sprintf($lang['CLICK_RETURN_CONFIG'], "<a href=\"" . append_sid("admin_board.php") . "\">", "</a>") . "<br /><br />" . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], "<a href=\"" . append_sid("index.php?pane=right") . "\">", "</a>");

		message_die(GENERAL_MESSAGE, $message);
#
#-----[ BEFORE, ADD ]------------------------------------------
#
	// [begin] Warnings Mod 1.0.7
	if( isset($_POST['submit']) )
	{
		$sql = "SELECT * FROM " . USERS_TABLE . " WHERE user_warnings >= " . $new['warnings_per_ban'];
		$result = $db->sql_query($sql) or message_die(GENERAL_MESSAGE, 'ERROR GETTING BANNED USERS', '', __LINE__, __FILE__, $sql);

		$users_list = array();

		if ($db->num_rows($result))
		{
			while ( $row = $db->sql_fetchrow($result) )
			{
				$users_list[] = $row['user_id'];
			}
			
			$sql = "DELETE FROM " . SESSIONS_TABLE . " WHERE session_user_id IN (" . implode(',', $users_list) . ")";
			$db->sql_query($sql) or message_die(GENERAL_ERROR, 'COULD NOT UPDATE SESSION INFORMATION', '', __LINE__, __FILE__, $sql);
		}
	}
	// [end] Warnings Mod 1.0.7
	
# 
#-----[ FIND ]------------------------------------------ 
# 
	"SMTP_USERNAME" => $new['smtp_username'],

# 
#-----[ AFTER, ADD ]------------------------------------------ 
#
	// [begin] Warnings Mod 1.0.7
	"WARNINGS_PER_BAN" => $new['warnings_per_ban'],
	// [end] Warnings Mod 1.0.7
	
	
	
     .
	
	
	
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_users.php

#
#-----[ FIND ]------------------------------------------
#
		// query to get the list of flags
		$sql = "SELECT *
			FROM " . FLAG_TABLE . "
			ORDER BY flag_name";
		if(!$flags_result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Couldn't obtain flags information.", "", __LINE__, __FILE__, $sql);
		}
		$flag_row = $db->sql_fetchrowset($flags_result);
		$num_flags = $db->num_rows($flags_result);
			
#
#-----[ AFTER, ADD ]------------------------------------------
#
			// [begin] Warnings Mod 1.0.7
			$sql = "SELECT warning_id FROM " . WARNINGS_TABLE . " WHERE warning_user_id = $user_id";
			$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, 'COULD NOT SELECT ALL USERS PRIVATE MESSAGES', '', __LINE__, __FILE__, $sql);

			while ( $row_warnings = $db->sql_fetchrow($result) )
			{
				$mark_list[] = $row_warnings['warning_id'];
			}
			
			if ( count($mark_list) )
			{
				$delete_sql_id = implode(', ', $mark_list);
				
				$delete_sql = "DELETE FROM " . WARNINGS_TABLE . " WHERE warning_id IN ($delete_sql_id)";
				$db->sql_query($delete_sql) or message_die(GENERAL_ERROR, 'COULD NOT DELETE WARNINGS INFO', '', __LINE__, __FILE__, $delete_sql);

				$delete_text_sql = "DELETE FROM " . WARNINGS_TEXT_TABLE . " WHERE warning_id IN ($delete_sql_id)";
				$db->sql_query($delete_text_sql) or message_die(GENERAL_ERROR, 'COULD NOT DELETE WARNINGS TEXT', '', __LINE__, __FILE__, $delete_text_sql);
			}
			// [end] Warnings Mod 1.0.7

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
# 
# EoM